using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using Com.AlbLab.GEP.Domain.Entities;
using Com.AlbLab.GEP.Domain.Entities.Standard;

namespace Com.AlbLab.GEP.Domain.Entities.Standard
{
    public class PST_D01_Disattivazione_Fornitura_richiesta_cliente : BASE_PraticaStandard
    {

        GEP_DATID01 _PraticaDB;
        
        public PST_D01_Disattivazione_Fornitura_richiesta_cliente( )
            : base()
        {
         
        }

        // **
        // Durante la creazione della pratica vengono valorizzati la tipologia della pratica Standard/Non Standard
        // E la lista dei controlli per i campi che si hanno dal foglio recapitato dal distributore
        // **
        public PST_D01_Disattivazione_Fornitura_richiesta_cliente(System.Data.DataColumnCollection cols, System.Data.DataRow dr)
            : base(cols, dr)
        {
            this.ListaControlliValori.Add(new string[] { "Presenza_Cliente_No_Telegestito", "1", "CheckValoreSiNo", "Valore del campo 'Presenza cliente'", null, null, null });
            this.ListaControlliValori.Add(new string[] { "tel", "1", "CheckNotEmpty", "numero telefono cliente finale", null, "Presenza_Cliente_No_Telegestito;SI", null });
            this.ListaControlliValori.Add(new string[] { "Disatt_Fuori_Orario", "1", "CheckValoreSiNo", "Valore del campo 'Disattivazione fuori orario'", null, null, null });
            this.ListaControlliValori.Add(new string[] { "Da_Eseguire_Non_Prima_Del", "1", null, null, null, null, null });
        }

        public override string CodiceServizio
        {
            get { return "D01"; }
        }

        public override string DescrizioneServizio
        {
            get { return "Disattivazione della fornitura su richiesta del cliente finale."; }
        }

        public override object RecordDB
        {
            get 
            { 
                return _PraticaDB; 
            }
            set 
            { 
                _PraticaDB = (GEP_DATID01)value;
                IsSaved = true;
            }
        }

        public override void CaricaPraticaDB() { 
        
            _PraticaDB = new GEP_DATID01((decimal) DBCodicePratica);
            IsSaved = true;
            FromDB = true;
            FromFile = false;
        }

        public override void SalvaPraticaDB()
        {
            _PraticaDB = new GEP_DATID01(-1);
            _PraticaDB.Gep_testata.Tes_Cod_Servizio = this.CodiceServizio;
            _PraticaDB.Gep_testata.Tes_Piva_Utente = (string)RecordRaw[LCS_piva_utente];
            _PraticaDB.Gep_testata.Tes_Piva_Distributore = (string)RecordRaw[LCS_piva_distr];
            _PraticaDB.Gep_testata.Tes_Cod_Prat_Utente = (string)RecordRaw[LCS_cod_prat_distr];
            _PraticaDB.Gep_testata.Tes_Cod_Contr_Disp = (string)RecordRaw[LCS_cod_contr_disp];
            _PraticaDB.Gep_testata.Tes_Pod = (string)RecordRaw[LCS_pod];
            _PraticaDB.Gep_testata.Tes_Codfis_Cli = (string)RecordRaw[LCS_codfis_cliente];
            _PraticaDB.Gep_testata.Tes_Pariva_Cli = (string)RecordRaw[LCS_piva_cliente];
            _PraticaDB.Gep_testata.Tes_Tel_Cli = (string)RecordRaw["tel"];
            _PraticaDB.Dd01_presenza_cliente_finale = (string)RecordRaw["Presenza_Cliente_No_Telegestito"];
            _PraticaDB.Dd01_Disatt_Fuori_Orario = (string)RecordRaw["Disatt_Fuori_Orario"];
            _PraticaDB.Dd01_Dt_Non_Esegprima = Convert.ToDateTime(RecordRaw["Da_Eseguire_Non_Prima_Del"]);
            _PraticaDB.Gep_testata.Tes_Note = (string)RecordRaw["note"];
        }

        public override GEP_TESTATA GEP_testata
        {
            get
            {
                return _PraticaDB.Gep_testata;
            }
        }
    }
}
